#include <stdio.h>
#include <pthread.h>
#include <unistd.h>

#include "stack.c"

#include "btree.c"


void print_node(int data)
{
    printf("%d ", data);
}
int main() {
    // 顺序表插入测试
    // 顺序表删除测试
    // 顺序表遍历测试
    // 查找顺序表测试（查找元素）

    // 入栈测试
    // 弹栈测试
    
 

    // 入队测试
    // 出队测试
  /*   queue* q = create_queue();
    if (q == NULL) {
        return 1; // 队列创建失败
    }

    // 入队测试
    push(q, 10);
    push(q, 20);
    push(q, 30);

    // 出队测试
    printf("出队元素: %d\n", pop(q)); // 10
    printf("出队元素: %d\n", pop(q)); // 20
    printf("出队元素: %d\n", pop(q)); // 30
    printf("出队元素: %d\n", pop(q)); // 队列为空，返回 -1

    // 释放队列
    release_queue(q); 
    */


    //二叉树
    // 回调函数：打印节点值
// 回调函数：打印节点值


    // 创建二叉树
    btreenode n1 = {1, NULL, NULL};
    btreenode n2 = {2, NULL, NULL};
    btreenode n3 = {3, NULL, NULL};
    btreenode n4 = {4, NULL, NULL};
    btreenode n5 = {5, NULL, NULL};

    n1.left = &n2;
    n1.right = &n3;
    n2.left = &n4;
    n2.right = &n5;

    btree bt = {&n1};

    // 先序遍历
    printf("先序遍历: ");
    pre_order_visit(&bt, print_node);
    printf("\n");

    // 中序遍历
    printf("中序遍历: ");
    in_order_visit(&bt, print_node);
    printf("\n");

    // 后序遍历
    printf("后序遍历: ");
    post_order_visit(&bt, print_node);
    printf("\n");

    // 层序遍历
    printf("层序遍历: ");
    level_visit(&bt, print_node);
    printf("\n");

    return 0;
}


   

